{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 过拟合和欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4953707811865009"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(X, y)\n",
    "lin_reg.score(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_predict = lin_reg.predict(X)\n",
    "plt.axis('on')\n",
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 明显欠拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 下面统一用均方差来横向我们模型的误差大小，使用mean_squared_error方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0750025765636577"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "y_predict = lin_reg.predict(X)\n",
    "mean_squared_error(y, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用多项式回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "         steps=[('poly',\n",
       "                 PolynomialFeatures(degree=2, include_bias=True,\n",
       "                                    interaction_only=False, order='C')),\n",
       "                ('std_scaler',\n",
       "                 StandardScaler(copy=True, with_mean=True, with_std=True)),\n",
       "                ('lin_reg',\n",
       "                 LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "                                  normalize=False))],\n",
       "         verbose=False)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly2_reg = PolynomialRegression(degree=2)\n",
    "poly2_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0987392142417856"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y2_predict = poly2_reg.predict(X)\n",
    "mean_squared_error(y, y2_predict) # 显然比上面线性回归的3.0750025765636577要小很多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y2_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0508466763764148"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly10_reg = PolynomialRegression(degree=10)\n",
    "poly10_reg.fit(X, y)\n",
    "\n",
    "y10_predict = poly10_reg.predict(X)\n",
    "mean_squared_error(y, y10_predict) # degree到达一定值后，再往后准确率并不会提高太多，degree太高就过拟合了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y10_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6879768981520811"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly100_reg = PolynomialRegression(degree=100) # 进一步夸张地提高degree，就会看到下图过拟合了\n",
    "poly100_reg.fit(X, y)\n",
    "\n",
    "y100_predict = poly100_reg.predict(X)\n",
    "mean_squared_error(y, y100_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y100_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly100_reg.predict(X_plot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 10])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 多项式回归项数太多(即degree太大)会导致过拟合，虽然能基本拟合现有的所有点，但是预测新的样本时就没啥通用性了，即模型的泛华能力差，所以要**引入测试集**，就是下一节的内容了"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
